home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / tep2 < prev    next >
Text File  |  1985-06-03  |  21KB  |  496 lines

  1. 100 REM   MACTEP - MACINTOSH TERMINAL EMULATOR PROGRAM
  2. 110 REM      MOUSE MENUS BY LOFTUS E. BECKER, JR. - CIS 70206,67
  3. 130 REM   VERSION 1.87 - 6-JUN-84
  4. 134 REM    PHONE NUMBER EDITOR AND AUTOLOGON BY
  5.  
  6. 135 REM    MICHAEL MCKAY, COMPUSERVE 70066,527
  7. 137 REM    MERGING OF MACTEP VERSION 1.87 WITH AUTO.TEP 
  8. 138 REM      AND OTHER EDITING BY JIM ALIFF, COMPUSERVE 70045,1007
  9.  
  10. 140 REM   DENNIS F. BROTHERS - COMPUSERVE 70065,172 - MCI MAIL DBROTHERS
  11.  
  12. 160 REM   COPYRIGHT (C) 1984 - BROTHERS ASSOCIATES, WAYLAND MA
  13. 170 REM   PERMISSION IS HEREBY GRANTED FOR PERSONAL, NON-COMMERCIAL
  14. 180 REM   REPRODUCTION AND USE OF THIS PROGRAM, PROVIDED THAT THIS
  15. 190 REM   NOTICE IS INCLUDED IN ANY COPY.
  16. 310 CLEAR, 27500,2048
  17. 320 CALL TEXTFONT(0): CALL TEXTSIZE (12): CALL TEXTFACE (1): CLS
  18. 330 CALL MOVETO (150,50): PRINT "AUTO MACTEP MOUSE 1.87"
  19. 335 CALL MOVETO(82,90):PRINT"BASED ON MACTEP V 1.87 BY DENNIS BROTHERS"
  20. 340 CALL MOVETO (128, 110): PRINT "MENUS BY LOFTUS E. BECKER, JR."
  21. 350 CALL MOVETO (118, 130): PRINT "EDITOR/AUTOLOG BY MICHAEL MCKAY"
  22. 355 CALL MOVETO(127,150):PRINT "MERGED AND EDITED BY JIM ALIFF"
  23. 360 CALL MOVETO (300, 250): PRINT "INITIALIZING. . . ."
  24. 380 DEFINT A-Z
  25. 430 BUFFERSIZE=4096
  26. 440 BUFLIM=BUFFERSIZE\4
  27. 460 FALSE=0: TRUE=-1
  28. 480 LF=10: LF$=CHR$(LF)
  29. 490 CR=13: CR$=CHR$(CR)
  30. 500 XON=17: XON$=CHR$(XON)
  31. 510 XOFF=19: XOFF$=CHR$(XOFF)
  32. 512 ESC=27: ESC$=CHR$(ESC)
  33. 515 PAGELENGTH$=CHR$(29)+"A@"+STRING$(116,64)+"C@"+STRING$(12,64)+"A@"+CHR$(30)
  34. 520 PRINTERON$= CHR$(27) + CHR$(68) + CHR$(128) + CHR$(0)+PAGELENGTH$
  35. 530 PRINTEROFF$ = CHR$(27) +"C"+CHR$(29)+"0"
  36. 550 OPTB$=CHR$(186): SHOPTB$=CHR$(245)
  37. 560 CMDD=4: CMDD$=CHR$(CMDD)
  38. 565 OPTR$=CHR$(168): SHOPTR$=CHR$(229)
  39. 570 OPTT$=CHR$(160): SHOPTT$=CHR$(230)
  40. 580 OPTX$=CHR$(197): SHOPTX$=CHR$(244)
  41. 590 GOOD1$="CONNECT"
  42. 600 BAD1$ = "ERROR": BAD2$ =  "BUSY": BAD3$ = "NO CARRIER"
  43. 610 START! = TIMER: FINISH! = TIMER
  44. 630 AIN=-6: AOUT=-7
  45. 640 SB1=&H4000: SB15=&H8000: SB2=&HC000
  46. 650 PARNONE=&H0: PARODD=&H1000: PAREVEN=&H3000
  47. 660 DB5=&H0: DB6=&H800: DB7=&H400: DB8=&HC00
  48. 670 DUPLEX$=""
  49. 672 A!=0
  50. 673 AUTOLOG=0:XL=0
  51. 674 NOW=0
  52. 676 WHICHMENU=0:MENULINES=0
  53. 678 BLACK=0:SQUEAK=0
  54. 680 WHERE=0:INRANGE=0
  55. 682 TOP=0:BOTTOM=0
  56. 684 CHOICE=0
  57. 710 GOSUB 3230
  58. 1320 CALL TEXTFACE(0)
  59. 1330 CALL PENNORMAL: CALL SHOWPEN: CALL PENMODE(10)
  60. 1340 BR! = 300
  61. 1430 OPEN "COM1:" AS #1 LEN=BUFFERSIZE
  62. 1435 IF BR! <1200 THEN WIDTH 80 ELSE WIDTH 255
  63. 1440 WIDTH #1,255
  64. 1460 TC=INT((115200!/BR!)+.5)-2
  65. 1480 FOR I=0 TO 49\2: PARAMLIST(I)=0: NEXT I
  66. 1490 PARAMLIST(24\2)=AIN
  67. 1500 PARAMLIST(26\2)=8
  68. 1510 PARAMLIST(28\2)=SB1+PARNONE+DB8+TC
  69. 1520 CALL CONTROL!(PARAM!)
  70. 1540 FOR I=0 TO 49\2: PARAMLIST(I)=0: NEXT I
  71. 1550 PARAMLIST(24\2)=AIN
  72. 1560 PARAMLIST(26\2)=9
  73. 1570 PARAMLIST(28\2)=BUFFERH
  74. 1572 PARAMLIST(30\2)=BUFFERL
  75. 1574 PARAMLIST(32\2)=BUFFERSIZE
  76. 1580 CALL CONTROL!(PARAM!)
  77. 1590 GOSUB 7220
  78. 1790 GOTO 4220
  79. 1810 PRINT: PRINT: PRINT
  80. 1840 REM   TERMINAL MODE
  81. 1842 ON ERROR GOTO 0
  82. 1845 CALL TEXTSIZE(9): CALL TEXTFONT(4)
  83. 1850 CALL OBSCURECURSOR
  84. 1870 CALL PENSIZE(4,1)
  85. 1880 XFLAG=FALSE
  86. 1890 CALL LINE(0,-4)
  87. 1900 IF LOC(1)=0 THEN GOTO 1960
  88. 1905 IF NOT RCVXFLAG THEN 1920
  89. 1910    IF LOC(1)>BUFLIM AND NOT XFLAG THEN PRINT #1,XOFF$;: XFLAG=TRUE
  90. 1920    L$=INPUT$(LOC(1),#1)
  91. 1930    CALL TRANSLATE!(XTABLE!,LP!,TLP!)
  92. 1940    IF TL<>0 THEN CALL LINE(0,4): PRINT LEFT$(L$,TL);: CALL LINE(0,-4)
  93. 1950    IF XFLAG THEN XFLAG=FALSE: PRINT #1,XON$;
  94. 1960 C$=INKEY$
  95. 1970 IF ABS (MOUSE(0)) = 2 THEN 4220
  96. 1980 IF C$="" THEN GOTO 1900
  97. 1990 IF C$= CMDD$ THEN LCOPY:LPRINT PRINTEROFF$: GOTO 1900
  98. 2000 IF C$=OPTB$ OR C$=SHOPTB$ THEN CALL LINE(0,4): BASIC=TRUE : GOTO 2060
  99. 2010 IF C$=OPTR$ OR C$=SHOPTR$ THEN CALL LINE(0,4): BASIC=FALSE: GOTO 2060
  100. 2020 IF C$=OPTT$ OR C$=SHOPTT$ THEN CALL LINE(0,4): GOTO 2520
  101. 2030 CALL PENNORMAL: CALL SHOWPEN: CALL PENMODE(10): CALL PENSIZE(4,1)
  102. 2040 PRINT #1,C$;
  103. 2050 GOTO 1900
  104. 2060 CALL PENSIZE(6,1)
  105. 2090 XFLAG=FALSE: CRFLAG=TRUE: FLUSH=FALSE
  106. 2100 PRINT: PRINT "RECEIVE FILE NAME - "
  107. 2110 LINE INPUT "     (P=PRINTER, C=CLIPBOARD, RETURN=ABORT): ",F$
  108. 2120 IF F$="" THEN GOTO 1840
  109. 2130 IF F$="C" OR F$="C" THEN F$="CLIP:"
  110. 2140 IF F$="P" OR F$="P" THEN F$="LPT1:"
  111. 2150 OPEN F$ FOR OUTPUT AS #2: WIDTH #2,255
  112. 2160 IF F$<>"LPT1:" AND F$<>"LPT1:" THEN GOTO 2190
  113. 2170    PRINT #2,PRINTERON$;
  114. 2180 REM
  115. 2190 CALL LINE(0,-2)
  116. 2200 QUIT=FALSE
  117. 2210 WHILE NOT QUIT
  118. 2220 IF LOC(1)=0 THEN GOTO 2360
  119. 2230 IF NOT RCVXFLAG THEN GOTO 2250
  120. 2240 IF LOC(1)>BUFLIM AND NOT XFLAG THEN PRINT #1,XOFF$;: XFLAG=TRUE
  121. 2250 L$=INPUT$(LOC(1),#1)
  122. 2260 CALL TRANSLATE!(XTABLE!,LP!,TLP!)
  123. 2270 IF TL=0 THEN GOTO 2350
  124. 2280 CALL LINE(0,2): PRINT LEFT$(L$,TL);: CALL LINE(0,-2)
  125. 2290 IF NOT BASIC THEN GOTO 2320
  126. 2300 CALL BPROC!(LP!,TLP!,CRFLAGP!,FLUSHP!)
  127. 2310 IF TL=0 THEN GOTO 2350 
  128. 2320 IF NOT RCVXFLAG THEN GOTO 2340
  129. 2330 IF LOC(1)>BUFLIM AND NOT XFLAG THEN PRINT #1,XOFF$;: XFLAG=TRUE
  130. 2340 PRINT #2,LEFT$(L$,TL); 
  131. 2350 IF XFLAG THEN XFLAG=FALSE: PRINT #1,XON$;
  132. 2360 C$=INKEY$
  133. 2370 IF C$="" THEN GOTO 2410
  134. 2380 IF C$=OPTB$ OR C$=SHOPTB$ THEN QUIT=TRUE: GOTO 2410
  135. 2390 IF C$=OPTR$ OR C$=SHOPTR$ THEN QUIT=TRUE: GOTO 2410
  136. 2400  PRINT #1,C$;
  137. 2410 WEND
  138. 2420 CALL LINE(0,2)
  139. 2430 IF F$<>"LPT1:" AND F$<>"LPT1:" THEN GOTO 2450
  140. 2440 PRINT #2,PRINTEROFF$
  141. 2450 CLOSE #2 
  142. 2460 IF RIGHT$(F$,1)=":" THEN GOTO 2490
  143. 2470 IF BASIC THEN TYPEAPPL$="MSBAMSBA" ELSE TYPEAPPL$="TEXTMACA"
  144. 2480 GOSUB 8000 
  145. 2490 PRINT: PRINT "RECEIVE ENDED": PRINT
  146. 2500 GOTO 1840 
  147. 2520 REM TRANSMIT (UPLOAD) ASCII FILE
  148. 2540 CALL PENSIZE(2,1)
  149. 2550 XFLAG=FALSE
  150. 2560 PRINT: PRINT "TRANSMIT FILE NAME - "
  151. 2570 LINE INPUT "     (C=CLIPBOARD, RETURN=ABORT): ",F$
  152. 2580 IF F$="" THEN GOTO 1840
  153. 2590 IF F$="C" OR F$="C" THEN F$="CLIP:"
  154. 2600 ON ERROR GOTO 3100
  155. 2610 OPEN F$ FOR INPUT AS #2 
  156. 2620 ON ERROR GOTO 0
  157. 2630 PRINT "IF A PROMPT IS SPECIFIED, EACH LINE IS TRANSMITTED ONLY AFTER THE"
  158. 2640 PRINT "  PROMPT CHARACTER IS RECEIVED FROM THE REMOTE OR TYPED ON THE KEY-"
  159. 2650 PRINT "  BOARD (IF TYPED ON THE KEYBOARD, IT IS NOT SENT TO THE REMOTE)."
  160. 2660 LINE INPUT "PROMPT CHARACTER (RETURN FOR NONE): ",PROMPT$
  161. 2670 PRINT "USE X-ON/X-OFF TRANSMIT HANDSHAKING DURING UPLOAD?";
  162. 2680 LINE INPUT " (Y/N, RETURN=N): ",C$
  163. 2690 IF C$="Y" OR C$="Y" THEN OUTXENAB=1: GOSUB 7220
  164. 2700 REM
  165. 2710 CALL LINE(0,-6)
  166. 2720 QUIT=FALSE
  167. 2730 GOFLAG=PROMPT$=""
  168. 2740 WHILE NOT (EOF(2) OR QUIT)
  169. 2750 IF LOC(1)<>0 THEN GOTO 2860
  170. 2760 IF NOT GOFLAG THEN GOTO 2970
  171. 2770 LINE INPUT #2,XL$ 
  172. 2780 IF XL$="" THEN GOTO 2830
  173. 2790 PCNT=0
  174. 2800 FOR I=1 TO LEN(XL$): C$=MID$(XL$,I,1)
  175. 2810 IF C$=PROMPT$ THEN PCNT=PCNT+1
  176. 2820 PRINT #1,C$;: NEXT I
  177. 2830 PRINT #1,CR$; 
  178. 2840 GOFLAG=PROMPT$=""
  179. 2850 IF LOC(1)=0 THEN GOTO 2970
  180. 2860 IF NOT RCVXFLAG THEN GOTO 2880
  181. 2870 IF LOC(1)>BUFLIM AND NOT XFLAG THEN PRINT #1,XOFF$;: XFLAG=TRUE
  182. 2880 L$=INPUT$(LOC(1),#1)
  183. 2890 CALL TRANSLATE!(XTABLE!,LP!,TLP!)
  184. 2900 IF TL=0 THEN GOTO 2960
  185. 2910 IF GOFLAG THEN GOTO 2950
  186. 2920 I=0
  187. 2930 I=INSTR(I+1,LEFT$(L$,TL),PROMPT$):IF I=0 THEN GOTO 2950
  188. 2940 PCNT=PCNT-1: GOFLAG=PCNT<0:IF NOT GOFLAG THEN GOTO 2930
  189. 2950 CALL LINE(0,6): PRINT LEFT$(L$,TL);: CALL LINE(0,-6)
  190. 2960 IF XFLAG THEN XFLAG=FALSE: PRINT #1,XON$;
  191. 2970 C$=INKEY$
  192. 2980 IF C$="" THEN GOTO 3020
  193. 2990 IF C$=PROMPT$ THEN GOFLAG=TRUE: GOTO 3020
  194. 3000 IF C$=OPTT$ OR C$=SHOPTT$ THEN QUIT=TRUE: GOTO 3030
  195. 3010 PRINT #1,C$;
  196. 3020 IF LOC(1)<>0 THEN GOTO 2860
  197. 3030 WEND
  198. 3040 CALL LINE(0,6)  '  ERASE THE CURSOR
  199. 3050 CLOSE #2  '  DONE WITH TRANSMIT FILE
  200. 3060 IF OUTXENAB<>0 THEN OUTXENAB=0: GOSUB 7220
  201. 3070 PRINT: PRINT "TRANSMIT ENDED": PRINT
  202. 3080 GOTO 1840
  203. 3100 PRINT: PRINT "COULDN'T OPEN FILE - RETURNING TO TERMINAL MODE.": PRINT
  204. 3110 RESUME 1840
  205. 3230 REM  IMPORTANT THAT ALL VARIABLES BE REFERENCED BEFORE POINTERS SET
  206. 3260 DIM MLCODEARRAY(199)
  207. 3270 DIM XTABLEARRAY(127)
  208. 3280 DIM BUFFERARRAY(BUFFERSIZE/2)
  209. 3290 DIM PARAMLIST(39)
  210. 3300 I=0: MLLINE=0: MLCHK=0: MLL=0: MLS=0: ML$=""
  211. 3310 TL=0
  212. 3320 BR!=0: TC=0
  213. 3330 OUTXENAB=0
  214. 3340 L$="": LP!=0: C$="": XL$=""
  215. 3350 F$="": FL=0: FP!=0
  216. 3360 TYPEAPPL$=""
  217. 3370 BASIC=FALSE: XFLAG=FALSE: RCVXFLAG=TRUE: RCVXFLAG$="X-ON/X-OFF"
  218. 3380 CRFLAG=FALSE: FLUSH=FALSE
  219. 3390 GOFLAG=FALSE: PCNT=0: PROMPT$=""
  220. 3400 C=0
  221. 3410 QUIT=0
  222. 3430 MLCODE!=0
  223. 3440 CONTROL!=0
  224. 3450 TRANSLATE!=0
  225. 3460 BPROC!=0
  226. 3470 GETFILEINFO!=0
  227. 3480 SETFILEINFO!=0
  228. 3490 XTABLE!=0
  229. 3500 BUFFER!=0: BUFFERT!=0: BUFFERH=0: BUFFERL=0
  230. 3510 PARAM!=0
  231. 3520 TLP!=0: CRFLAGP!=0: FLUSHP!=0
  232. 3530 DIM MENU$(12)
  233. 3537 DIM PHONENUMBERS$(12,1)
  234. 3550 REM     NO NEW VARIABLES MAY BE USED AFTER THIS POINT
  235. 3560 MLCODE!=VARPTR(MLCODEARRAY(0))
  236. 3570 XTABLE!=VARPTR(XTABLEARRAY(0))
  237. 3580 BUFFER!=VARPTR(BUFFERARRAY(0))
  238. 3590 BUFFERH=INT(BUFFER!/65536!): BUFFERT!=BUFFER!-(BUFFERH*65536!)
  239. 3600 IF BUFFERT!<32768! THEN BUFFERL=BUFFERT! ELSE BUFFERL=BUFFERT!-65536!
  240. 3610 PARAM!=VARPTR(PARAMLIST(0))
  241. 3620 LP!=VARPTR(L$): FP!=VARPTR(F$)
  242. 3630 TLP!=VARPTR(TL)
  243. 3640 CRFLAGP!=VARPTR(CRFLAG)
  244. 3650 FLUSHP!=VARPTR(FLUSH)
  245. 3680 RESTORE 9020 
  246. 3700 READ ML$
  247. 3760 MLL=VAL("&H"+MID$(ML$,3,2)+MID$(ML$,1,2))
  248. 3770 MLS=VAL("&H"+MID$(ML$,7,2)+MID$(ML$,5,2))
  249. 3780 IF MLL=0 THEN GOTO 3850
  250. 3790 FOR I=0 TO MLL-1
  251. 3800 POKE MLCODE!+MLS+I,VAL("&H"+MID$(ML$,9+I*2,2))
  252. 3810 NEXT I
  253. 3820 MLLINE=MLLINE+10
  254. 3830 GOTO 3700
  255. 3850 CONTROL!=MLCODE!+MLCODEARRAY(0)
  256. 3860 TRANSLATE!=MLCODE!+MLCODEARRAY(1)
  257. 3870 BPROC!=MLCODE!+MLCODEARRAY(2)
  258. 3880 GETFILEINFO!=MLCODE!+MLCODEARRAY(3)
  259. 3890 SETFILEINFO!=MLCODE!+MLCODEARRAY(4)
  260. 3960 FOR I=0 TO 255:POKE XTABLE!+I,0:NEXT I
  261. 3970 FOR I=7 TO 13
  262. 3980 POKE XTABLE!+I,I: POKE XTABLE!+128+I,I
  263. 3990 NEXT I
  264. 4000 POKE XTABLE!+10,0: POKE XTABLE!+128+10,0
  265. 4010 FOR I=32 TO 126
  266. 4020 POKE XTABLE!+I,I: POKE XTABLE!+128+I,I
  267. 4030 NEXT I
  268. 4050 RETURN
  269. 4220 REM  MAIN MENU ROUTINE
  270. 4230 CALL TEXTSIZE(12): CALL TEXTFONT(0)
  271. 4260 WHICHMENU = 1: GOSUB 4710
  272. 4270 ON CHOICE GOTO 4280, 5200, 4430, 4440, 4560, 4590, 4600, 5600, 4450, 4620
  273. 4280 REM AUTODIAL ROUTINE
  274. 4290 WHICHMENU = 2: GOSUB 6010
  275. 4300 I=1
  276. 4310 REM
  277. 4320 IF CHOICE = MENULINES THEN 4220
  278. 4325 IF CHOICE=(MENULINES-2) THEN CALL MOVETO(70,50+(15*MENULINES)) ELSE 4332
  279. 4327 PRINT "ENTER THE NUMBER TO DIAL:":PRINT PTAB(82) " ( <RETURN> = MENU )"
  280. 4330 CALL MOVETO(250,50+(15*MENULINES)):LINE INPUT "",F$
  281. 4331 IF F$="" THEN 4280 ELSE DUPLEX$="F0":GOTO 4350
  282. 4332 IF CHOICE = (MENULINES - 1) THEN FOR I=1 TO 4000:NEXT ELSE 4340
  283. 4334 PRINT #1,"+++" : FOR I=1 TO 20000:NEXT:PRINT #1,"ATH":GOTO 1840
  284. 4340 IF CHOICE < (MENULINES -2) THEN F$ = PHONENUMBERS$(CHOICE,1) ELSE 4350
  285. 4345 IF LEFT$(PHONENUMBERS$(CHOICE,0),1)<>"C" THEN DUPLEX$="F0" ELSE DUPLEX$="F1"
  286. 4347 IF AUTOLOG<>1 THEN 4350
  287. 4348 IF LEFT$(L$,1)<>"C" THEN DUPLEX$="F0" ELSE DUPLEX$="F1"
  288. 4350 NOW = 0
  289. 4360 C$="": PRINT: PRINT #1, "AT" + DUPLEX$ + "D" + F$
  290. 4370 IF LOC(1) = 0 THEN GOTO 4400
  291. 4380 C=ASC(INPUT$(1,1)) AND &H7F
  292. 4390 PRINT CHR$(C);: IF C>28 THEN C$= C$+CHR$(C)
  293. 4400 IF INSTR(C$, BAD1$) OR INSTR(C$, BAD2$) OR INSTR(C$, BAD3$) THEN NOW = NOW +1 ELSE 4405
  294. 4402 PRINT NOW:FOR I = 1 TO 4000: NEXT
  295. 4403 IF NOW>3 THEN AUTOLOG=0:GOTO 4220 ELSE 4360
  296. 4405 IF AUTOLOG=1 AND INSTR(C$,GOOD1$) THEN RETURN
  297. 4410 IF INSTR(C$, GOOD1$) THEN START! = TIMER: GOTO 1840
  298. 4420 IF ABS(MOUSE(0)) = 2 THEN GOTO 4220 ELSE GOTO 4370
  299. 4430 CLOSE #1:IF BR! = 300 THEN BR! = 1200 ELSE BR! = 300
  300. 4435 GOTO 1430
  301. 4440 IF RCVXFLAG=TRUE THEN RCVXFLAG=FALSE:RCVXFLAG$="     NONE":GOTO 4220
  302. 4445 RCVXFLAG=TRUE:RCVXFLAG$="X-ON/X-OFF":GOTO 4220
  303. 4450 CLS: C$="":CALL MOVETO (130, 50+ (15* MENULINES))
  304. 4455 LINE INPUT "NAME OF FILE TO READ: ", F$: IF F$="" THEN 4220
  305. 4460 ON ERROR GOTO 4530
  306. 4465 CALL MOVETO(130,70+(15*MENULINES)):PRINT "LINE PRINTER?  <Y/N>"
  307. 4467 C$=INKEY$:IF C$="" THEN 4467
  308. 4468 IF (C$<>"Y") AND (C$<>"Y") AND (C$<>"N") AND (C$<>"N") THEN 4467
  309. 4469 IF (C$="Y") OR (C$="Y") THEN WIDTH "LPT1:",255:LPRINT PAGELENGTH$;
  310. 4470 OPEN F$ FOR INPUT AS #2
  311. 4475 CALL TEXTSIZE(9): CALL TEXTFONT(4)
  312. 4480 WHILE NOT EOF(2)
  313. 4490 LINE INPUT #2, XL$: IF (C$="N") OR (C$="N") THEN PRINT XL$ ELSE PRINT XL$:LPRINT XL$
  314. 4500 WEND
  315. 4502 IF (C$="Y") OR (C$="Y") THEN LPRINT CHR$(12)+PRINTER0FF$
  316. 4505 C$=""
  317. 4510 CLOSE #2:CALL TEXTSIZE(12): CALL TEXTFONT(0)
  318. 4515 PRINT: PRINT "DOUBLE-CLICK TO CONTINUE. ": GOSUB 5090 
  319. 4520 ON ERROR GOTO 0: GOTO 4220
  320. 4530 CLOSE #2: PRINT "NO SUCH FILE.  AVAILABLE FILES ARE:": FILES: GOSUB 5080
  321. 4540 IF MOUSE(0) <> 0 THEN 4540
  322. 4550 RESUME 4450
  323. 4560 CLOSE
  324. 4570  CALL TEXTFONT(3): CALL TEXTFACE(0): CALL TEXTSIZE(12): CALL TEXTMODE (0)
  325. 4580  CALL MOVETO (70, 50 + (15*MENULINES)): PRINT "BACK TO BASIC."
  326. 4585 PRINT PTAB(70) "RESETTING HEAP.": CLEAR, 19000: END
  327. 4590 CLOSE: SYSTEM
  328. 4600 REM TIMER FUNCTIONS
  329. 4610 START! = TIMER: GOTO 4220
  330. 4620 PRINT #1, XON$: CLS
  331. 4625 CALL TEXTSIZE(12): CALL TEXTFONT(0)
  332. 4630 PRINT "DOUBLE-CLICK THE MOUSE TO RETURN TO THE MENU": PRINT
  333. 4640 PRINT "  CMD-D PRINTS THE ACTIVE WINDOW"
  334. 4650 PRINT "  OPT-T STARTS AND STOPS ASCII TRANSMIT (UPLOAD)."
  335. 4660 PRINT "  OPT-R STARTS AND STOPS ASCII RECEIVE (DOWNLOAD)."
  336. 4670 PRINT "  OPT-B STARTS AND STOPS ASCII BASIC RECEIVE"
  337. 4680 PRINT "             (LINES NOT BEGINNING WITH A DIGIT ARE IGNORED)."
  338. 4690 PRINT: PRINT
  339. 4700 GOTO 1840
  340. 4710 IF WHICHMENU = 1 THEN RESTORE 4970 'MAIN MENU
  341. 4715 IF WHICHMENU = 3 THEN RESTORE 5000 'AUTOLOG MENU
  342. 4720 CLS: CALL MOVETO (60,20): I =0: BLACK = 0
  343. 4730  READ MENU$(I)
  344. 4740 IF MENU$(I) = "-1" THEN MENULINES = I-1 ELSE I=I+1: GOTO 4730
  345. 4750 PRINT MENU$(0) TAB(33) "FREESPACE=";FRE(0);" BYTES": ' TITLE
  346. 4760 IF WHICHMENU = 1 THEN CALL MOVETO (310, 75): PRINT "("; BR!;")"; ELSE 4775
  347. 4765 CALL MOVETO(300,90):PRINT RCVXFLAG$
  348. 4770 CALL MOVETO (275, 135): FINISH! = TIMER
  349. 4772 PRINT INT((FINISH! - START!)/60*100)/100; "MINUTES";
  350. 4775 CALL TEXTMODE(1)
  351. 4780 FOR I = 1 TO MENULINES: CALL MOVETO (100, 30 + (15*I))
  352. 4785 IF WHICHMENU=1 OR WHICHMENU = 3 THEN PRINT MENU$(I)
  353. 4790 IF WHICHMENU=2 OR WHICHMENU=5 THEN PRINT PHONENUMBERS$(I,0) TAB(40) PHONENUMBERS$(I,1)
  354. 4792 NEXT I
  355. 4795 CALL TEXTMODE(0)
  356. 4800 CALL MOVETO (70, 50 + (15*MENULINES)): PRINT "CLICK YOUR CHOICE."
  357. 4810 '      ROUTINE TO PRINT BOXES AND GET COMMAND
  358. 4820 SQUEAK= MOUSE(0):  WHERE = MOUSE(2)
  359. 4830 IF WHERE > 38 AND WHERE < (20 + (15*I)) THEN INRANGE = TRUE ELSE INRANGE = FALSE
  360. 4840 IF SQUEAK AND BLACK THEN CHOICE = BLACK: RETURN
  361. 4850 IF NOT INRANGE AND (BLACK = 0) THEN  4820
  362. 4860 IF NOT INRANGE AND (BLACK <> 0) THEN  GOSUB 4920: BLACK = 0: GOTO 4820
  363. 4870 IF INRANGE THEN NOW = INT(WHERE - 20)\15
  364. 4880 IF NOW = BLACK THEN 4820 : ' NO NEED TO CHANGE IF ON A BLACKENED LINE
  365. 4890      IF BLACK = 0 THEN BLACK = NOW: GOSUB 4920: GOTO 4820
  366. 4900      GOSUB 4920: BLACK = NOW: GOSUB 4920: GOTO 4820: ' WHITEN, THEN BLACKEN
  367. 4910 '      SUBROUTINE TO BLACKEN AND WHITEN BOXES
  368. 4920 TOP = 18 + BLACK*15: BOTTOM = TOP + 14
  369. 4930 CALL PENMODE (10)
  370. 4940 LINE(96, TOP) - (380, BOTTOM),,BF
  371. 4950 RETURN
  372. 4960 '         DATA FOR MENUS
  373. 4970 DATA  MAIN MENU, AUTODIAL, AUTO LOGON, RESET BAUD RATE, RECEIVE HANDSHAKING
  374. 4980 DATA EXIT TO BASIC, EXIT TO SYSTEM, RESET TIMER, EDIT PHONE NUMBERS,VIEW/PRINT FILE
  375. 4990 DATA RETURN TO TERMINAL MODE, "-1"
  376. 5000 DATA  AUTOLOG MENU
  377. 5010 DATA   COMPUSERVE                               xxx-xxxx
  378. 5015 DATA "  (MODIFY LINE NOS. 5010,5225,5250,5260)"
  379. 5020 REM   INSERT ADDITIONL AUTOLOG DATA HERE.
  380. 5070 DATA RETURN TO TERMINAL MODE,-1
  381. 5080 CALL MOVETO (180, 50 + (15* MENULINES)): PRINT "DOUBLE-CLICK TO PROCEED";
  382. 5090 SQUEAK = MOUSE(0)
  383. 5100 IF ABS(SQUEAK) = 2 THEN RETURN ELSE GOTO 5090
  384. 5200 REM AUTO LOGON SECTION
  385. 5210 WHICHMENU=3: GOSUB 4710
  386. 5220 CLS: ON CHOICE GOTO 5225,4620,4620
  387. 5225 AUTOLOG=1:L$="COMPUSERVE":F$="xxx-xxxx":GOSUB 4348
  388. 5230 AUTOLOG=0:L$="":START!=TIMER:A!=0
  389. 5235  PRINT #1,CHR$(3);
  390. 5238 WHILE (L$ <> ":") AND (A!<=15) :IF LOC(1)=0 THEN 5239 ELSE L$=INPUT$(1,#1):GOSUB 5500
  391. 5239 A!=TIMER-START!:WEND
  392. 5240 IF A!>15 THEN PRINT:PRINT "COMPUSERVE TOOK TOO LONG TO RESPOND":FOR I=1 TO 5000:NEXT: GOTO 4620
  393. 5250 PRINT #1,"xxxxx,xxxx" ' USER NUMBER
  394. 5260 L$="":WHILE L$ <> ":":L$=INPUT$(1,#1):GOSUB 5500:WEND:PRINT #1,"xxxxxxxxxxx" ' PASSWORD
  395. 5270 L$="":WHILE L$ <>"C":L$=INPUT$(1,#1):GOSUB 5500:WEND
  396. 5280 BEEP:AUTOLOG=0:BEEP:START!=TIMER:BEEP:GOTO 1840
  397. 5300 REM INSERT ADDITIONAL AUTOLOG ROUTINES HERE.
  398. 5500 CALL TRANSLATE!(XTABLE!,LP!,TLP!)
  399. 5510 IF TL<>0 THEN PRINT LEFT$(L$,TL);
  400. 5520 IF XFLAG THEN XFLAG=FALSE: PRINT #1,XON$;
  401. 5530 RETURN
  402. 5600 REM CHANGE PHONE NUMBERS
  403. 5610 WHICHMENU=5: GOSUB 6020
  404. 5620 MENULINES=XL+1:PHONENUMBERS$(MENULINES,0)="ADD A NEW NUMBER."
  405. 5630 MENULINES=XL+2:PHONENUMBERS$(MENULINES,0)="SAVE NUMBERS."
  406. 5640 MENULINES=XL+3:PHONENUMBERS$(MENULINES,0)="RETURN TO MENU."
  407. 5650 CLS: CALL MOVETO(60,20):BLACK=0:MENU$(0)="EDIT PHONE NUMBERS MENU":GOSUB 4750: C=CHOICE
  408. 5660 IF CHOICE = MENULINES THEN 4220
  409. 5670 IF CHOICE = (MENULINES - 2) THEN  5740
  410. 5680 IF CHOICE = (MENULINES - 1) THEN GOSUB 5780:GOTO 5600
  411. 5690 PRINT:PRINT "CURRENT NAME:" PTAB(200) PHONENUMBERS$(C,0)
  412. 5700 PRINT "  NEW NAME (OR DELETE)":PRINT "  <RETURN> = NO CHANGE:" PTAB (200);
  413. 5702 LINE INPUT "",L$:IF L$="" THEN 5715 ELSE PHONENUMBERS$(C,0)=L$
  414. 5705 IF PHONENUMBERS$(C,0)="DELETE" OR PHONENUMBERS$(C,0)="DELETE" THEN 5707
  415. 5706 IF PHONENUMBERS$(C,0)<>"DELETE" THEN 5715
  416. 5707 PHONENUMBERS$(C,0)="":PHONENUMBERS$(C,1)=""
  417. 5708 FOR I=C TO XL-1:PHONENUMBERS$(I,0)=PHONENUMBERS$(I+1,0)
  418. 5709 PHONENUMBERS$(I,1)=PHONENUMBERS$(I+1,1):NEXT
  419. 5710 PHONENUMBERS$(XL,0)="":PHONENUMBERS$(XL,1)=""
  420. 5712 XL=XL-1:GOTO 5600
  421. 5715 PRINT:PRINT "CURRENT NUMBER:" PTAB(200) PHONENUMBERS$(C,1)
  422. 5720 PRINT "  NEW NUMBER":PRINT "  <RETURN> = NO CHANGE:" PTAB(200);
  423. 5725 LINE INPUT "",L$:IF L$="" THEN 5600 ELSE PHONENUMBERS$(C,1)=L$
  424. 5730 GOTO 5600
  425. 5740 XL=XL+1: IF XL=9 THEN XL=8 ELSE 5750
  426. 5745 PRINT:PRINT "SORRY - ONLY 8 NUMBERS ALLOWED.":FOR I=1 TO 3000: NEXT :GOTO 5600
  427. 5750 PRINT:PRINT "NEW NAME:" PTAB(200);:LINE INPUT "",PHONENUMBERS$(XL,0)
  428. 5755 IF PHONENUMBERS$(XL,0)="" THEN XL=XL-1: GOTO 5600
  429. 5760 PRINT:PRINT "NEW NUMBER:" PTAB(200);:LINE INPUT "",PHONENUMBERS$(XL,1)
  430. 5765 IF PHONENUMBERS$(XL,1)="" THEN XL=XL-1:GOTO 5600
  431. 5770 GOTO 5600
  432. 5780 OPEN "MODEM.NUMBERS" FOR OUTPUT AS #8
  433. 5790 FOR I=1 TO XL
  434. 5800 IF PHONENUMBERS$(I,0) <> "" THEN PRINT #8, PHONENUMBERS$(I,0): PRINT #8,PHONENUMBERS$(I,1)
  435. 5810 NEXT
  436. 5820 CLOSE #8:RETURN
  437. 6010 GOSUB 6020: GOTO 6110
  438. 6020 IF PHONENUMBERS$(1,0) <> "" AND PHONENUMBERS$(1,1) <> "" THEN MENULINES=XL:GOTO 6100
  439. 6030 ON ERROR GOTO 6160
  440. 6040 OPEN "MODEM.NUMBERS" FOR INPUT AS #9
  441. 6050 FOR I=1 TO 8:IF EOF(9) THEN XL=I-1:GOTO 6090
  442. 6060 LINE INPUT #9, PHONENUMBERS$(I,0):IF EOF(9) THEN XL=I-1:GOTO 6090
  443. 6070 LINE INPUT #9, PHONENUMBERS$(I,1):MENU$(I)=PHONENUMBERS$(I,1)
  444. 6080 NEXT I :XL=8
  445. 6090 CLOSE #9
  446. 6100 RETURN
  447. 6110 MENULINES=XL+1:PHONENUMBERS$(MENULINES,0)="ENTER A NUMBER TO BE DIALED."
  448. 6120 MENULINES=XL+2:PHONENUMBERS$(MENULINES,0)="DISCONNECT."
  449. 6130 MENULINES=XL+3:PHONENUMBERS$(MENULINES,0)="RETURN TO MENU WITHOUT DIALING."
  450. 6140 CLS: CALL MOVETO(60,20):BLACK=0:I=0:MENU$(0)="PHONE NUMBER MENU": GOTO 4750
  451. 6160 IF ERL<>6040 THEN 6190
  452. 6170 OPEN "MODEM.NUMBERS" FOR OUTPUT AS #8: CLOSE #8
  453. 6180 RESUME
  454. 6190 ON ERROR GOTO 0
  455. 7220 REM SET COMM HANDSHAKE PARAMETERS
  456. 7230 FOR I=0 TO 49\2: PARAMLIST(I)=0: NEXT I
  457. 7240 PARAMLIST(24\2)=AIN
  458. 7250 PARAMLIST(26\2)=10
  459. 7260 POKE PARAM!+28,OUTXENAB
  460. 7270 POKE PARAM!+29,0
  461. 7280 POKE PARAM!+30,XON
  462. 7290 POKE PARAM!+31,XOFF
  463. 7300 POKE PARAM!+32,0
  464. 7310 POKE PARAM!+33,0
  465. 7320 POKE PARAM!+34,0
  466. 7330 CALL CONTROL!(PARAM!)
  467. 7360 RETURN
  468. 8000 REM  SUBROUTINE TO SET TYPE AND APPLICATION OF A FILE
  469. 8020 FL=LEN(F$)
  470. 8030 F$=CHR$(FL)+F$
  471. 8040 FOR I=0 TO 79: POKE PARAM!+I,0: NEXT I
  472. 8050 POKE PARAM!+19,PEEK(FP!+2)
  473. 8060 POKE PARAM!+20,PEEK(FP!+3)
  474. 8070 POKE PARAM!+21,PEEK(FP!+4)
  475. 8080 CALL GETFILEINFO!(PARAM!)
  476. 8090 FOR I=1 TO 8
  477. 8100 POKE PARAM!+31+I,ASC(MID$(TYPEAPPL$,I,1))
  478. 8110 NEXT I
  479. 8120 CALL SETFILEINFO!(PARAM!)
  480. 8130 RETURN
  481. 9020 DATA "1C000000000A0024007600FC01164E56FFF848EE0101FFF8206E0008A0044CEEEF"
  482. 9030 DATA "1C001C000101FFF84E5E4E754E56FFE848EE0707FFE8226E000C42811219E181BE"
  483. 9040 DATA "1C003800121942821419E1821419E182141920422248246E001042824A4167123A"
  484. 9050 DATA "1C0054004280101812B20000670452895282534166F0206E000830824CEE07074E"
  485. 9060 DATA "1C007000FFE84E5E4E754E56FFE048EE1F07FFE0206E0014548842801018E18097"
  486. 9070 DATA "1C008C001018E180101820402248246E0010266E000C286E0008321242824A416A"
  487. 9080 DATA "1C00A800674610180C00000D661A4A546708425436BC0001602E4A53662A36BC8B"
  488. 9090 DATA "1C00C400000112C0524260204A54661C4A5367120C0000306D060C0000396F069A"
  489. 9100 DATA "1C00E00038BC00016006425312C05242534166BA34824CEE1F07FFE04E5E4E7596"
  490. 9110 DATA "1C00FC004E56FFF848EE0101FFF8206E0008A00C4CEE0101FFF84E5E4E754E5696"
  491. 9120 DATA "18001801FFF848EE0101FFF8206E0008A00D4CEE0101FFF84E5E4E75C4"
  492. 9130 DATA "000000000000"
  493. 9580 END
  494.  
  495. M
  496. E4E754E56